package org.hawk.gwt.ppc.parser;

import java.util.List;

/**
 * Represents whole compilation unit including package declaration, imports and classes.
 *  
 * @author alex.bereznevatiy@gmail.com
 */
public interface CompilationUnitDescriptor extends DescriptorContainer {
	
	/**
	 * @return top classes from this compilation unit.
	 */
	List<ClassDescriptor> getTopClasses();
	
	/**
	 * @return imports section descriptor (never <code>null</code>)
	 */
	ImportsDescriptor getImports();
	
	/**
	 * @return package declaration descriptor (never <code>null</code>) 
	 */
	PackageDescriptor getPackage();

	/**
	 * @return name of compilation unit that corresponds to the name of top-level class.
	 */
	String getName();
}
